package ch.cyberduck.binding.application;

/*
 * Copyright (c) 2002-2009 David Kocher. All rights reserved.
 *
 * http://cyberduck.ch/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * Bug fixes, suggestions and comments should be sent to:
 * dkocher@cyberduck.ch
 */

import ch.cyberduck.binding.foundation.NSDictionary;
import ch.cyberduck.binding.foundation.NSObject;

import org.rococoa.ObjCClass;

/**
 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
 * a tool written by <a href="http://ochafik.free.fr/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>
 * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a>, <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>.
 */
public abstract class NSPrintInfo extends NSObject {
    private static final _Class CLASS = org.rococoa.Rococoa.createClass("NSPrintInfo", _Class.class);

    /**
     * <i>native declaration : /System/Library/Frameworks/AppKit.framework/Headers/AppKitDefines.h</i><br>
     * enum values
     */
    public interface NSPrintingOrientation {
        int NSPortraitOrientation = 0;
        int NSLandscapeOrientation = 1;
    }

    /**
     * <i>native declaration : /System/Library/Frameworks/AppKit.framework/Headers/AppKitDefines.h</i><br>
     * enum values
     */
    public interface NSPrintingPaginationMode {
        int NSAutoPagination = 0;
        int NSFitPagination = 1;
        int NSClipPagination = 2;
    }

    public interface _Class extends ObjCClass {
        /**
         * Set or get the "shared" instance of NSPrintInfo.  The shared print info object is the one that is used automatically by -[NSPageLayout runModal] and +[NSPrintOperation printOperationWithView:].<br>
         * Original signature : <code>+(void)setSharedPrintInfo:(NSPrintInfo*)</code><br>
         * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:66</i>
         */
        void setSharedPrintInfo(NSPrintInfo printInfo);

        /**
         * Original signature : <code>+(NSPrintInfo*)sharedPrintInfo</code><br>
         * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:67</i>
         */
        NSPrintInfo sharedPrintInfo();

        /**
         * Return the default printer, if one has been selected by the user, nil otherwise.<br>
         * Original signature : <code>+(NSPrinter*)defaultPrinter</code><br>
         * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:127</i>
         */
        com.sun.jna.Pointer defaultPrinter();

        /**
         * A method that was deprecated in Mac OS 10.2.  +[NSPrintInfo setDefaultPrinter:] does nothing.<br>
         * Original signature : <code>+(void)setDefaultPrinter:(NSPrinter*)</code><br>
         * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:130</i>
         */
        void setDefaultPrinter(com.sun.jna.Pointer printer);

        /**
         * A method that was deprecated in Mac OS 10.2.  NSPrintInfo's implementation of this method recognizes only a small fixed set of paper names, and does not take the details of any particular printer into account.  You should use -[NSPrinter pageSizeForPaper:] instead.<br>
         * Original signature : <code>+(id)sizeForPaperName:(NSString*)</code><br>
         * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:133</i>
         */
        NSObject sizeForPaperName(String name);

        /// <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h</i>
        NSPrintInfo alloc();
    }

    /**
     * Set or get the "shared" instance of NSPrintInfo.  The shared print info object is the one that is used automatically by -[NSPageLayout runModal] and +[NSPrintOperation printOperationWithView:].<br>
     * Original signature : <code>+(void)setSharedPrintInfo:(NSPrintInfo*)</code><br>
     * <i>native declaration : /System/Library/Frameworks/AppKit.framework/Headers/AppKitDefines.h:66</i>
     */
    public static void setSharedPrintInfo(NSPrintInfo printInfo) {
        CLASS.setSharedPrintInfo(printInfo);
    }

    /**
     * Original signature : <code>+(NSPrintInfo*)sharedPrintInfo</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:67</i>
     */
    public static NSPrintInfo sharedPrintInfo() {
        return CLASS.sharedPrintInfo();
    }

    /**
     * Given a dictionary that contains attribute entries, initialize.  Attributes that are recognized by the NSPrintInfo class will be silently validated in the context of the printer selected by the attributes dictionary, or the default printer if the attributes dictionary selects no printer.  Attributes that are not recognized by the NSPrintInfo class will be preserved, and returned in the dictionary returned by the -dictionary method, but otherwise ignored.  This is the designated initializer for this class.<br>
     * Original signature : <code>-(id)initWithDictionary:(NSDictionary*)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:70</i>
     */
    public abstract NSPrintInfo initWithDictionary(NSDictionary attributes);

    /**
     * Factory method<br>
     *
     * @see #initWithDictionary(NSDictionary)
     */
    public static NSPrintInfo createWithDictionary(NSDictionary attributes) {
        return CLASS.alloc().initWithDictionary(attributes);
    }

    /**
     * Return a dictionary that contains attribute entries.  This dictionary may contain attributes that were not specified in the dictionary originally passed to this object by -initWithDictionary.  Changes to this dictionary will be reflected in the values returned by subsequent invocations of other of this class' methods.<br>
     * Original signature : <code>-(NSMutableDictionary*)dictionary</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:73</i>
     */
    public abstract com.sun.jna.Pointer dictionary();

    /**
     * Set or get the values of the paper attributes.  Because an NSPrintInfo's paper name, paper size, and orientation attributes must be kept consistent, invocation of any of the setting methods in this group may affect the values returned by subsequent invocations of any of the getting methods in this group.  For example, paper name and paper size must always agree, and the value returned by -paperSize always takes orientation into account.<br>
     * Original signature : <code>-(void)setPaperName:(NSString*)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:76</i>
     */
    public abstract void setPaperName(com.sun.jna.Pointer name);
    /**
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:77</i><br>
     * Conversion Error : /// Original signature : <code>-(void)setPaperSize:()</code><br>
     * - (void)setPaperSize:(null)size; (Argument size cannot be converted)
     */
    /**
     * Original signature : <code>-(void)setOrientation:(NSPrintingOrientation)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:78</i><br>
     *
     * @param orientation @see AppKitLibrary#NSPrintingOrientation
     */
    public abstract void setOrientation(int orientation);

    /**
     * Original signature : <code>-(NSString*)paperName</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:79</i>
     */
    public abstract com.sun.jna.Pointer paperName();

    /**
     * Original signature : <code>-(id)paperSize</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:80</i>
     */
    public abstract NSObject paperSize();

    /**
     * Original signature : <code>-(NSPrintingOrientation)orientation</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:81</i>
     */
    public abstract /**
     * @see AppKitLibrary#NSPrintingOrientation
     */
    int orientation();

    /**
     * Set or get the values of the pagination attributes.<br>
     * Original signature : <code>-(void)setLeftMargin:(float)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:84</i>
     */
    public abstract void setLeftMargin(float margin);

    /**
     * Original signature : <code>-(void)setRightMargin:(float)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:85</i>
     */
    public abstract void setRightMargin(float margin);

    /**
     * Original signature : <code>-(void)setTopMargin:(float)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:86</i>
     */
    public abstract void setTopMargin(float margin);

    /**
     * Original signature : <code>-(void)setBottomMargin:(float)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:87</i>
     */
    public abstract void setBottomMargin(float margin);

    /**
     * Original signature : <code>-(float)leftMargin</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:88</i>
     */
    public abstract float leftMargin();

    /**
     * Original signature : <code>-(float)rightMargin</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:89</i>
     */
    public abstract float rightMargin();

    /**
     * Original signature : <code>-(float)topMargin</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:90</i>
     */
    public abstract float topMargin();

    /**
     * Original signature : <code>-(float)bottomMargin</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:91</i>
     */
    public abstract float bottomMargin();

    /**
     * Original signature : <code>-(void)setHorizontallyCentered:(BOOL)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:92</i>
     */
    public abstract void setHorizontallyCentered(boolean flag);

    /**
     * Original signature : <code>-(void)setVerticallyCentered:(BOOL)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:93</i>
     */
    public abstract void setVerticallyCentered(boolean flag);

    /**
     * Original signature : <code>-(BOOL)isHorizontallyCentered</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:94</i>
     */
    public abstract boolean isHorizontallyCentered();

    /**
     * Original signature : <code>-(BOOL)isVerticallyCentered</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:95</i>
     */
    public abstract boolean isVerticallyCentered();

    /**
     * Original signature : <code>-(void)setHorizontalPagination:(NSPrintingPaginationMode)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:96</i><br>
     *
     * @param mode @see AppKitLibrary#NSPrintingPaginationMode
     */
    public abstract void setHorizontalPagination(int mode);

    /**
     * Original signature : <code>-(void)setVerticalPagination:(NSPrintingPaginationMode)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:97</i><br>
     *
     * @param mode @see AppKitLibrary#NSPrintingPaginationMode
     */
    public abstract void setVerticalPagination(int mode);

    /**
     * Original signature : <code>-(NSPrintingPaginationMode)horizontalPagination</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:98</i>
     */
    public abstract /**
     * @see AppKitLibrary#NSPrintingPaginationMode
     */
    int horizontalPagination();

    /**
     * Original signature : <code>-(NSPrintingPaginationMode)verticalPagination</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:99</i>
     */
    public abstract /**
     * @see AppKitLibrary#NSPrintingPaginationMode
     */
    int verticalPagination();

    /**
     * Set or get the value of the job disposition attribute.<br>
     * Original signature : <code>-(void)setJobDisposition:(NSString*)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:102</i>
     */
    public abstract void setJobDisposition(com.sun.jna.Pointer disposition);

    /**
     * Original signature : <code>-(NSString*)jobDisposition</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:103</i>
     */
    public abstract com.sun.jna.Pointer jobDisposition();

    /**
     * Set or get the printer specified by this object.<br>
     * Original signature : <code>-(void)setPrinter:(NSPrinter*)</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:106</i>
     */
    public abstract void setPrinter(com.sun.jna.Pointer printer);

    /**
     * Original signature : <code>-(NSPrinter*)printer</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:107</i>
     */
    public abstract com.sun.jna.Pointer printer();

    /**
     * Validate all of the attributes encapsulated by this object.  This method is invoked automatically before the object is used by an NSPrintOperation.  This method may be overridden to perform validation of attributes that are not recognized by the NSPrintInfo class.<br>
     * Original signature : <code>-(void)setUpPrintOperationDefaultValues</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:110</i>
     */
    public abstract void setUpPrintOperationDefaultValues();

    /**
     * Return the imageable area of a sheet of paper specified by this object, taking into account the current printer, paper size, and orientation settings, but not scaling.  "Imageable area" is the maximum area that can possibly be marked on by the printer hardware, not the area defined by the current margin settings.  The rectangle is in a coordinate space measured by points, with (0, 0) being the lower-left corner of the oriented sheet and (paperWidth, paperHeight) being the upper-right corner of the oriented sheet.  The imageable bounds may extend past the edges of the sheet when, for example, a printer driver specifies it so that borderless printing can be done reliably.<br>
     * Original signature : <code>-(id)imageablePageBounds</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:115</i>
     */
    public abstract NSObject imageablePageBounds();

    /**
     * Return the human-readable name of the currently selected paper size, suitable for presentation in user interfaces.  This will typically be different from the name returned by -paperName, which is almost never suitable for presentation to to the user.<br>
     * Original signature : <code>-(NSString*)localizedPaperName</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:122</i>
     */
    public abstract com.sun.jna.Pointer localizedPaperName();

    /**
     * Return the default printer, if one has been selected by the user, nil otherwise.<br>
     * Original signature : <code>+(NSPrinter*)defaultPrinter</code><br>
     * <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h:127</i>
     */
    public static com.sun.jna.Pointer defaultPrinter() {
        return CLASS.defaultPrinter();
    }

    /// <i>native declaration : /System/Library/Frameworks/framework/Headers/AppKitDefines.h</i>
    public static NSPrintInfo alloc() {
        return CLASS.alloc();
    }
}
